﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using CapaDeEntidades;
using System.Data.SqlClient;
using System.Data;

namespace CapaDatos
{
   public class PrestamoDao
    {
       public static string connectionstring = "Initial Catalog=Biblioteca;Data Source=localhost;Integrated Security=SSPI;";


       public static bool RegistrarDevolucionPrestamo(Prestamo prestamo)
       {
           bool respu = false;
           SqlConnection conn = new SqlConnection(connectionstring);
           
           try
           {
               
               int idPrestamo = 0;

               if (prestamo.IdPrestamo != null)
               {
                   idPrestamo = prestamo.IdPrestamo;
               }


               SqlCommand cmd = new SqlCommand("sp_ActualizarPrestamo", conn);
               cmd.CommandType = CommandType.StoredProcedure;
               cmd.Parameters.AddWithValue("@idPrestamo", idPrestamo);
               cmd.Parameters.AddWithValue("@alta_devolucion", respu);
               cmd.Parameters["@alta_devolucion"].Direction = ParameterDirection.Output;
               cmd.ExecuteNonQuery();
               respu = Convert.ToBoolean(cmd.Parameters["@alta_devolucion"].Value);
           }
           catch (Exception ex)
           {
               System.Diagnostics.Debug.WriteLine(ex.Message);
               System.Diagnostics.Debug.WriteLine(ex.StackTrace);
           }
           finally
           {
               if (conn != null)
                   conn.Close();
           }
           return respu;
       }

       public static bool GenerarPrestamo(Prestamo prestamo){

           bool respu = false;
           SqlConnection conn = new SqlConnection(connectionstring);
           
           try
           {
               
               DateTime fechaPedido ; //REVISAR LAS FECHAS
               int idLibro =0;
               int idSocio= 0;
               DateTime fechaDevolucion;
               DateTime fechaRealDevolucion;


               if (prestamo.Libro.Codigo != null)
               {
                   idLibro = prestamo.Libro.Codigo;
               }

               if (prestamo.Socio.Codigo != null)
               {
                   idSocio = prestamo.Socio.Codigo;
               }
            //REVISAR VALIDACIONES

               fechaPedido = prestamo.FechaPrestamo;
              
               fechaDevolucion = prestamo.FechaDevolucion;
        
               //fechaRealDevolucion = prestamo.FechaRealDevolucion;
              

               conn.Open();
               SqlCommand cmd = new SqlCommand("sp_CrearPrestamo", conn);
               cmd.CommandType = CommandType.StoredProcedure;
               cmd.Parameters.AddWithValue("@fechaPedido", fechaPedido);
               cmd.Parameters.AddWithValue("@idLibro ", idLibro);
               cmd.Parameters.AddWithValue("@idSocio", idSocio);
               cmd.Parameters.AddWithValue("@fechaDevolucion", fechaDevolucion);
               //cmd.Parameters.AddWithValue("@fechaRealDevolucion", fechaRealDevolucion);

               cmd.Parameters.AddWithValue("@alta_prestamo", respu);


               cmd.Parameters["@alta_prestamo"].Direction = ParameterDirection.Output;
               cmd.ExecuteNonQuery();
               respu = Convert.ToBoolean(cmd.Parameters["@alta_prestamo"].Value);


           }
           catch (Exception ex)
           {
               System.Diagnostics.Debug.WriteLine(ex.Message);
               System.Diagnostics.Debug.WriteLine(ex.StackTrace);
           }
           finally
           {
               if (conn != null)
                   conn.Close();
           }
           return respu;


        }

       public static DataSet ObtenerPrestamosPorSocio(Prestamo prestamo){

           SqlConnection conn = new SqlConnection(connectionstring);
           DataSet ds = new DataSet();
           try
           {
               int idSocio = 0;

               if (prestamo.Socio.Codigo != null)
               {
                   idSocio = prestamo.Socio.Codigo;
               }

               SqlCommand cmd = new SqlCommand("sp_VerPrestamosSocio", conn);
               cmd.CommandType = CommandType.StoredProcedure;
               cmd.Parameters.AddWithValue("@idSocio ", idSocio);

               //LLENO EL DATASET
               SqlDataAdapter adapter = new SqlDataAdapter(cmd);
               adapter.Fill(ds);
           }
           catch (Exception ex)
           {
               System.Diagnostics.Debug.WriteLine(ex.Message);
               System.Diagnostics.Debug.WriteLine(ex.StackTrace);
           }
           finally
           {
               if (conn != null)
                   conn.Close();
           }
           return ds;


       }

       public static DataSet ObtenerPrestamosVencidosPorSocio(Prestamo prestamo)
       {

           SqlConnection conn = new SqlConnection(connectionstring);
           DataSet ds = new DataSet();
           try
           {
               int idSocio = 0;

               if (prestamo.Socio.Codigo != null)
               {
                   idSocio = prestamo.Socio.Codigo;
               }

               SqlCommand cmd = new SqlCommand("sp_VerPrestamosVencidosSocio", conn);
               cmd.CommandType = CommandType.StoredProcedure;
               cmd.Parameters.AddWithValue("@idSocio ", idSocio);

               //LLENO EL DATASET
               SqlDataAdapter adapter = new SqlDataAdapter(cmd);
               adapter.Fill(ds);
           }
           catch (Exception ex)
           {
               System.Diagnostics.Debug.WriteLine(ex.Message);
               System.Diagnostics.Debug.WriteLine(ex.StackTrace);
           }
           finally
           {
               if (conn != null)
                   conn.Close();
           }
           return ds;


       }


   }

 }

